Media recording capabilities, such as photography and video recording, have become common features available in a score of common, everyday devices. The ubiquity of such media recording capabilities has prompted a growing demand for media applications—to access media stored on different devices, to share media with other users. The Internet has further fueled the demand for media applications by greatly expanding the amount of media available to users and providing an ever-widening audience for conveniently sharing media.
Consequently, numerous browser-based tools have emerged that allow users to share and access media through a web browser from any Internet-connected device. For example, image search engines allow users to search the Web for image content and browse the searched photos through a web browser. Other browser-based tools and services, such as social network sites, similarly allow users to view and share photos through a web browser.
Browser-based tools have several limitations largely due to the memory and bandwidth constraints of user devices. Such limitations are particularly common when dealing with media files, such as photos, which typically have greater bandwidth and memory requirements than text files. For example, the number of photos that modern browsers can load and display is restricted by the amount of random-access memory (RAM) available to the browser. As the browser loads photos, the Document Object Model (DOM) of the browser continues to grow in size with each photo that is loaded, and the browser's memory begins to fill. If the browser continues to load more photos, the browser's memory will eventually fill, causing the browser to slow down or even crash.
As a result, present day browsers are unable to load large libraries of photos in a single page without crashing or causing significant performance issues. Thus, instead of loading a large library of photos in a single page, the browser will generally divide the photos over several discrete pages. The user must then load and browse each page separately. A common scenario is a photo gallery, where the browser requires the user to navigate sets of “previous” and “next” photo pages to browse the entire photo gallery. However, this is a tedious, wasteful, and inconvenient process for the user, particularly as the size of the photo gallery—and consequently the number of photo pages—increases.